type Longitude = number;  // 经度类型
type Latitude = number;   // 纬度类型

// 单个坐标点
export type Coordinate = [Longitude, Latitude];

export interface PolygonData {
  path: Coordinate[]; // 多边形顶点坐标数组
  strokeColor?: string; // 线条颜色
  fillColor?: string; // 填充颜色
  strokeWeight?: number; // 线条宽度
}

export interface MarkerData {
  position: [number, number]; // [longitude, latitude]
  title?: string;
  icon?: string; // custom icon URL
  hoverText?: string;
  angle?: string | number;
  // 车辆基本信息
  vehicleInfo?: {
    plateNo?: string; // 车牌号
    vin?: string; // VIN码
    vehicleType?: string; // 车辆类型
    soc?: number; // 电量
    speed?: number; // 车速
    yaw?: number; // 航向角
    vehicleStatus?: number; // 车辆状态
    taskStatus?: number; // 任务状态
    anomalousStatus?: number; // 故障状态
  };
  // 标记基本信息
  markerInfo?: {
    name?: string; // 名称
    type?: string; // 类型
    callName?: string; // 联系人姓名
    callPhone?: string; // 联系电话
  };
  // 悬浮事件回调
  onHover?: (vehicleInfo: any) => void;
  onLeave?: () => void;
  // 信息窗口配置
  infoWindow?: {
    content?: string; // 自定义信息窗口内容（HTML字符串）
    showOnHover?: boolean; // 是否在鼠标悬浮时显示
    showOnClick?: boolean; // 是否在点击时显示
    offset?: [number, number]; // 信息窗口偏移量
    closeWhenClickMap?: boolean; // 点击地图时是否关闭
  };
}

export interface PolylineData {
  path: Coordinate[]; // 折线路径坐标数组
  strokeColor?: string; // 线条颜色
  strokeWeight?: number; // 线条宽度
  strokeStyle?: string; // 线条样式
  showDir?: boolean; // 是否显示方向箭头
}